#include "modules/regcenter.h"

namespace mod {
	RegCenterModule::RegCenterModule(std::shared_ptr<Context> ctx, const std::string &module_name) : Module(ctx, module_name) {}
	RegCenterModule ::~RegCenterModule() = default;

	bool RegCenterModule::Init() { return true; }

	void RegCenterModule::Start() {
		// 【同步接受方】订阅同步事件，即接收远程同步的服务信息，并向本地注册中心进行注册
		ctx->eventBus.Subscribe<SyncEvent>([](const SyncEvent &event) {
			// 向本地注册中心发送注册请求
			log_info("[RegCenter] Registering service: %s", event.service.Name.c_str());
		});
	}

	/// @brief  订阅RC服务
	/// @note   订阅服务后，会自动向注册中心发送订阅请求，
	/// @param service_info
	void RegCenterModule::Subscribe(const ServiceInfo &service_info) {
		// 向本地注册中心发送订阅请求
		// 实现订阅逻辑
		// 示例：
		// 1. 构建订阅请求
		// 2. 发送请求到注册中心
		// 3. 处理响应
		// 4. 更新本地服务列表
		// 5. 启动心跳检测线程
		log_info("[RegCenter] Subscribing to service: %s", service_info.Name.c_str());
	}

	/// @brief  取消订阅RC服务
	/// @param service_info
	void RegCenterModule::Unsubscribe(const ServiceInfo &service_info) {
		// 向本地注册中心发送取消订阅请求
		log_info("[RegCenter] Unsubscribing from service: %s", service_info.Name.c_str());
	}
	void RegCenterModule::Register(const ServiceInfo &service_info) {
		// 向本地注册中心发送注册请求
		log_info("[RegCenter] Registering service: %s", service_info.Name.c_str());
	}

	void RegCenterModule::Stop() {}
} // namespace mod
